A data source may sequentially store blocks of data into a buffer. Moreover, a data requester may receive an entire set data from the buffer after the buffer is filled (e.g., the set of data may include multiple blocks). In some cases, the data source will continue to store blocks into the buffer before the set of data is provided to the data requestor (e.g. by storing a block in a first location in the buffer after a last location is filled). As a result, it is possible that the data source will overwrite a block of data before it is provided to the data requestor (and therefore the set of data may be incorrect).